package socket;

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBUtil {
    // 静态连接池
    private static DruidDataSource ds;

    //数据库工具类
    static{
        /*
        try{
            // 反射机制获取类对象
            Class.forName("com.mysql.cj.jdbc.Driver");
            //
        }catch (Exception e){
            e.printStackTrace();
        }*/
        // 实例化连接池
        ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.cj.jdbc.Driver");
        String databaseName = "jdbc_study";
        ds.setUrl("jdbc:mysql://localhost:3306/"+databaseName+"?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true");
        ds.setUsername("root");
        ds.setPassword("root");
        ds.setMaxActive(20);  // 最大连接数

        ds.setInitialSize(5); // 初始化连接数
    }

    // 静态方法获取连接
    // 之所以使用throw Exception，是为了让调用者处理异常,而不是创建者处理异常
    public static Connection getConnection() throws Exception{
        // 在静态块中加载驱动

        /*// 返回获取的连接
        String databaseName = "jdbc_study";
        return DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/"+databaseName+"?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                "root",
                "root"
        );*/
        // 返回连接池中的连接
        return ds.getConnection();
    }
}
